In many computing environments a print job may be initiated from an application, a batch file or some other method. Once a print job is initiated, the job is handed off along a print stream comprised of various print stream components that process the job into a format that can be accepted by a printing device for printing onto hard copy media. In some environments, print streams may be fairly simple, however in most common operating systems, such as Microsoft Windows systems, the print stream can be rather complex with many components and processing steps. While these systems are extremely reliable, errors can occur that cause a print job to fail.
A print job may also fail due to printing device errors. These errors may occur in the circuitry and logic of the printing device. They may also occur due to mechanical problems within the printing device. A print job may also fail due to improper preparation of the printing device as when a paper tray is empty or when the device is taken off line.
Various operating systems have methods for recovering from print job failures, however these methods have many drawbacks that often lead to failed recovery. In some systems, failed print jobs are stored in a spool directory until some arbitrary event occurs, but these events often don't occur until after the print job is needed or after the user has already found an alternative solution.
In some Microsoft operating systems, such as Windows 9x, an attempt to restart a failed print job commences when the operating system is restarted. There are several drawbacks to this approach: 1) the system must be rebooted; 2) the print job can fail again as the reason for the previous failure may not have been resolved; 3) the reason for the failure and the associated system configuration data is not recorded for future analysis; and 4) there is no option to restart the print job on an alternative, compatible printing device that is functioning. Other problems and shortcomings also exist in current systems.